{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-0.60174256  0.42873243 -2.82121208  2.84046933 -2.71887374 -2.66892177\n",
      "  5.48143334  0.86680909  1.92428931 -0.7979426   0.84849848 -0.86747911\n",
      " -4.60660349  0.6662643  -3.34566072 -4.21897161 -3.4193335  -3.21430785\n",
      "  1.62914483  2.27475661  0.37378564 -4.59261703 -0.88831133  3.7779573\n",
      "  1.05309056 -0.04993659  3.44187512 -2.17975278 -4.34553262 -3.78496078\n",
      " -1.35194819 -0.42787196]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "# set problem size\n",
    "N = 5\n",
    "E = np.random.normal(0, scale=N/2, size=2**N)\n",
    "\n",
    "print(E)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "Tau = 1\n",
    "\n",
    "# B(t): arbitary function\n",
    "def scheduleE(time):\n",
    "    return time/Tau\n",
    "\n",
    "# A(t): arbitary function\n",
    "def scheduleG(time):\n",
    "    return (Tau - time)/Tau\n",
    "\n",
    "# H(t): Hamiltonian\n",
    "def create_tfim(time=0, hamiltonian=None):\n",
    "    # set diagonal part\n",
    "    v = scheduleE(time)\n",
    "    if hamiltonian is None:\n",
    "        hamiltonian = np.diag(v*E)\n",
    "    else:\n",
    "        for i in range(2**N):\n",
    "            hamiltonian[i, i] = v*E[i]\n",
    "    # set off-diagonal part\n",
    "    g = -1*scheduleG(time)\n",
    "    for i in range(2**N):\n",
    "        for n in range(N):\n",
    "            j = i ^ (1 << n)\n",
    "            hamiltonian[i, j] = g\n",
    "            \n",
    "    return hamiltonian"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[-0.30087128 -0.5        -0.5        ...  0.          0.\n",
      "   0.        ]\n",
      " [-0.5         0.21436622  0.         ...  0.          0.\n",
      "   0.        ]\n",
      " [-0.5         0.         -1.41060604 ...  0.          0.\n",
      "   0.        ]\n",
      " ...\n",
      " [ 0.          0.          0.         ... -1.89248039  0.\n",
      "  -0.5       ]\n",
      " [ 0.          0.          0.         ...  0.         -0.67597409\n",
      "  -0.5       ]\n",
      " [ 0.          0.          0.         ... -0.5        -0.5\n",
      "  -0.21393598]]\n"
     ]
    }
   ],
   "source": [
    "print(create_tfim(time=0.5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy.linalg import eigh\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "H = None\n",
    "step = 0.01\n",
    "time_steps = [step*i for i in range(int(Tau/step) + 1)]\n",
    "\n",
    "x_data = np.zeros((len(time_steps), 2**N))\n",
    "y_data = np.zeros((len(time_steps), 2**N))\n",
    "z_data = np.zeros((len(time_steps), 2**N, 2**N))\n",
    "\n",
    "for i, t in enumerate(time_steps):\n",
    "    H = create_tfim(t, H)\n",
    "    evals_all, evecs_all = eigh(H)\n",
    "    \n",
    "    # save data\n",
    "    for n in range(2**N):\n",
    "        x_data[i, n] = t\n",
    "        y_data[i, n] = evals_all[n]\n",
    "        z_data[i, n] = evecs_all[:, n]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot energy data\n",
    "#color_diff = int(int('0xffffff', 16)/(2**N))\n",
    "color_diff = 0x8\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "ax.set_xlabel('Time')\n",
    "ax.set_ylabel(\"Hamiltonian's eigenvalue\")\n",
    "ax.set_title('Time Variation of Energy')\n",
    "ax.grid()\n",
    "\n",
    "for n in range(2**N):\n",
    "    color_text = \"{:0<7}\".format(str(hex(color_diff*n%0x0000ff).replace(\"0x\", \"#\"))) \n",
    "    ax.plot(x_data[:,n], y_data[:,n], linewidth=1, color=color_text)\n",
    "\n",
    "fig.savefig(\"TimeVariationOfEnergy.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "/* global mpl */\n",
       "window.mpl = {};\n",
       "\n",
       "mpl.get_websocket_type = function () {\n",
       "    if (typeof WebSocket !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert(\n",
       "            'Your browser does not have WebSocket support. ' +\n",
       "                'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "                'Firefox 4 and 5 are also supported but you ' +\n",
       "                'have to enable WebSockets in about:config.'\n",
       "        );\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById('mpl-warnings');\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent =\n",
       "                'This browser does not support binary websocket messages. ' +\n",
       "                'Performance may be slow.';\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = document.createElement('div');\n",
       "    this.root.setAttribute('style', 'display: inline-block');\n",
       "    this._root_extra_style(this.root);\n",
       "\n",
       "    parent_element.appendChild(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen = function () {\n",
       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
       "        fig.send_message('send_image_mode', {});\n",
       "        if (mpl.ratio !== 1) {\n",
       "            fig.send_message('set_dpi_ratio', { dpi_ratio: mpl.ratio });\n",
       "        }\n",
       "        fig.send_message('refresh', {});\n",
       "    };\n",
       "\n",
       "    this.imageObj.onload = function () {\n",
       "        if (fig.image_mode === 'full') {\n",
       "            // Full images could contain transparency (where diff images\n",
       "            // almost always do), so we need to clear the canvas so that\n",
       "            // there is no ghosting.\n",
       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "        }\n",
       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "    };\n",
       "\n",
       "    this.imageObj.onunload = function () {\n",
       "        fig.ws.close();\n",
       "    };\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_header = function () {\n",
       "    var titlebar = document.createElement('div');\n",
       "    titlebar.classList =\n",
       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
       "    var titletext = document.createElement('div');\n",
       "    titletext.classList = 'ui-dialog-title';\n",
       "    titletext.setAttribute(\n",
       "        'style',\n",
       "        'width: 100%; text-align: center; padding: 3px;'\n",
       "    );\n",
       "    titlebar.appendChild(titletext);\n",
       "    this.root.appendChild(titlebar);\n",
       "    this.header = titletext;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
       "    canvas_div.setAttribute(\n",
       "        'style',\n",
       "        'border: 1px solid #ddd;' +\n",
       "            'box-sizing: content-box;' +\n",
       "            'clear: both;' +\n",
       "            'min-height: 1px;' +\n",
       "            'min-width: 1px;' +\n",
       "            'outline: 0;' +\n",
       "            'overflow: hidden;' +\n",
       "            'position: relative;' +\n",
       "            'resize: both;'\n",
       "    );\n",
       "\n",
       "    function on_keyboard_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.key_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    canvas_div.addEventListener(\n",
       "        'keydown',\n",
       "        on_keyboard_event_closure('key_press')\n",
       "    );\n",
       "    canvas_div.addEventListener(\n",
       "        'keyup',\n",
       "        on_keyboard_event_closure('key_release')\n",
       "    );\n",
       "\n",
       "    this._canvas_extra_style(canvas_div);\n",
       "    this.root.appendChild(canvas_div);\n",
       "\n",
       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
       "    canvas.classList.add('mpl-canvas');\n",
       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
       "\n",
       "    this.context = canvas.getContext('2d');\n",
       "\n",
       "    var backingStore =\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        this.context.webkitBackingStorePixelRatio ||\n",
       "        this.context.mozBackingStorePixelRatio ||\n",
       "        this.context.msBackingStorePixelRatio ||\n",
       "        this.context.oBackingStorePixelRatio ||\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        1;\n",
       "\n",
       "    mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
       "        'canvas'\n",
       "    ));\n",
       "    rubberband_canvas.setAttribute(\n",
       "        'style',\n",
       "        'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
       "    );\n",
       "\n",
       "    var resizeObserver = new ResizeObserver(function (entries) {\n",
       "        var nentries = entries.length;\n",
       "        for (var i = 0; i < nentries; i++) {\n",
       "            var entry = entries[i];\n",
       "            var width, height;\n",
       "            if (entry.contentBoxSize) {\n",
       "                width = entry.contentBoxSize.inlineSize;\n",
       "                height = entry.contentBoxSize.blockSize;\n",
       "            } else {\n",
       "                width = entry.contentRect.width;\n",
       "                height = entry.contentRect.height;\n",
       "            }\n",
       "\n",
       "            // Keep the size of the canvas and rubber band canvas in sync with\n",
       "            // the canvas container.\n",
       "            canvas.setAttribute('width', width * mpl.ratio);\n",
       "            canvas.setAttribute('height', height * mpl.ratio);\n",
       "            canvas.setAttribute(\n",
       "                'style',\n",
       "                'width: ' + width + 'px; height: ' + height + 'px;'\n",
       "            );\n",
       "\n",
       "            rubberband_canvas.setAttribute('width', width);\n",
       "            rubberband_canvas.setAttribute('height', height);\n",
       "\n",
       "            // And update the size in Python. We ignore the initial 0/0 size\n",
       "            // that occurs as the element is placed into the DOM, which should\n",
       "            // otherwise not happen due to the minimum size styling.\n",
       "            if (width != 0 && height != 0) {\n",
       "                fig.request_resize(width, height);\n",
       "            }\n",
       "        }\n",
       "    });\n",
       "    resizeObserver.observe(canvas_div);\n",
       "\n",
       "    function on_mouse_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.mouse_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousedown',\n",
       "        on_mouse_event_closure('button_press')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseup',\n",
       "        on_mouse_event_closure('button_release')\n",
       "    );\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousemove',\n",
       "        on_mouse_event_closure('motion_notify')\n",
       "    );\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseenter',\n",
       "        on_mouse_event_closure('figure_enter')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseleave',\n",
       "        on_mouse_event_closure('figure_leave')\n",
       "    );\n",
       "\n",
       "    canvas_div.addEventListener('wheel', function (event) {\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        on_mouse_event_closure('scroll')(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.appendChild(canvas);\n",
       "    canvas_div.appendChild(rubberband_canvas);\n",
       "\n",
       "    this.rubberband_context = rubberband_canvas.getContext('2d');\n",
       "    this.rubberband_context.strokeStyle = '#000000';\n",
       "\n",
       "    this._resize_canvas = function (width, height, forward) {\n",
       "        if (forward) {\n",
       "            canvas_div.style.width = width + 'px';\n",
       "            canvas_div.style.height = height + 'px';\n",
       "        }\n",
       "    };\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus() {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'mpl-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'mpl-button-group';\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'mpl-button-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        var button = (fig.buttons[name] = document.createElement('button'));\n",
       "        button.classList = 'mpl-widget';\n",
       "        button.setAttribute('role', 'button');\n",
       "        button.setAttribute('aria-disabled', 'false');\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "\n",
       "        var icon_img = document.createElement('img');\n",
       "        icon_img.src = '_images/' + image + '.png';\n",
       "        icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
       "        icon_img.alt = tooltip;\n",
       "        button.appendChild(icon_img);\n",
       "\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    var fmt_picker = document.createElement('select');\n",
       "    fmt_picker.classList = 'mpl-widget';\n",
       "    toolbar.appendChild(fmt_picker);\n",
       "    this.format_dropdown = fmt_picker;\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = document.createElement('option');\n",
       "        option.selected = fmt === mpl.default_extension;\n",
       "        option.innerHTML = fmt;\n",
       "        fmt_picker.appendChild(option);\n",
       "    }\n",
       "\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_message = function (type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function () {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1], msg['forward']);\n",
       "        fig.send_message('refresh', {});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
       "    var x0 = msg['x0'] / mpl.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
       "    var x1 = msg['x1'] / mpl.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0,\n",
       "        0,\n",
       "        fig.canvas.width / mpl.ratio,\n",
       "        fig.canvas.height / mpl.ratio\n",
       "    );\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch (cursor) {\n",
       "        case 0:\n",
       "            cursor = 'pointer';\n",
       "            break;\n",
       "        case 1:\n",
       "            cursor = 'default';\n",
       "            break;\n",
       "        case 2:\n",
       "            cursor = 'crosshair';\n",
       "            break;\n",
       "        case 3:\n",
       "            cursor = 'move';\n",
       "            break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_message = function (fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
       "    for (var key in msg) {\n",
       "        if (!(key in fig.buttons)) {\n",
       "            continue;\n",
       "        }\n",
       "        fig.buttons[key].disabled = !msg[key];\n",
       "        fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
       "    if (msg['mode'] === 'PAN') {\n",
       "        fig.buttons['Pan'].classList.add('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    } else if (msg['mode'] === 'ZOOM') {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.add('active');\n",
       "    } else {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message('ack', {});\n",
       "};\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function (fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = 'image/png';\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src\n",
       "                );\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data\n",
       "            );\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        } else if (\n",
       "            typeof evt.data === 'string' &&\n",
       "            evt.data.slice(0, 21) === 'data:image/png;base64'\n",
       "        ) {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig['handle_' + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\n",
       "                \"No handler for the '\" + msg_type + \"' message type: \",\n",
       "                msg\n",
       "            );\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\n",
       "                    \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
       "                    e,\n",
       "                    e.stack,\n",
       "                    msg\n",
       "                );\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "};\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function (e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e) {\n",
       "        e = window.event;\n",
       "    }\n",
       "    if (e.target) {\n",
       "        targ = e.target;\n",
       "    } else if (e.srcElement) {\n",
       "        targ = e.srcElement;\n",
       "    }\n",
       "    if (targ.nodeType === 3) {\n",
       "        // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "    }\n",
       "\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    var boundingRect = targ.getBoundingClientRect();\n",
       "    var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
       "    var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
       "\n",
       "    return { x: x, y: y };\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys(original) {\n",
       "    return Object.keys(original).reduce(function (obj, key) {\n",
       "        if (typeof original[key] !== 'object') {\n",
       "            obj[key] = original[key];\n",
       "        }\n",
       "        return obj;\n",
       "    }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function (event, name) {\n",
       "    var canvas_pos = mpl.findpos(event);\n",
       "\n",
       "    if (name === 'button_press') {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * mpl.ratio;\n",
       "    var y = canvas_pos.y * mpl.ratio;\n",
       "\n",
       "    this.send_message(name, {\n",
       "        x: x,\n",
       "        y: y,\n",
       "        button: event.button,\n",
       "        step: event.step,\n",
       "        guiEvent: simpleKeys(event),\n",
       "    });\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.key_event = function (event, name) {\n",
       "    // Prevent repeat events\n",
       "    if (name === 'key_press') {\n",
       "        if (event.which === this._key) {\n",
       "            return;\n",
       "        } else {\n",
       "            this._key = event.which;\n",
       "        }\n",
       "    }\n",
       "    if (name === 'key_release') {\n",
       "        this._key = null;\n",
       "    }\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which !== 17) {\n",
       "        value += 'ctrl+';\n",
       "    }\n",
       "    if (event.altKey && event.which !== 18) {\n",
       "        value += 'alt+';\n",
       "    }\n",
       "    if (event.shiftKey && event.which !== 16) {\n",
       "        value += 'shift+';\n",
       "    }\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
       "    if (name === 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message('toolbar_button', { name: name });\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";/* global mpl */\n",
       "\n",
       "var comm_websocket_adapter = function (comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function () {\n",
       "        comm.close();\n",
       "    };\n",
       "    ws.send = function (m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function (msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data']);\n",
       "    });\n",
       "    return ws;\n",
       "};\n",
       "\n",
       "mpl.mpl_figure_comm = function (comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = document.getElementById(id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm);\n",
       "\n",
       "    function ondownload(figure, _format) {\n",
       "        window.open(figure.canvas.toDataURL());\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element;\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error('Failed to find cell for figure', id, fig);\n",
       "        return;\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function (fig, msg) {\n",
       "    var width = fig.canvas.width / mpl.ratio;\n",
       "    fig.root.removeEventListener('remove', this._remove_fig_handler);\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable();\n",
       "    fig.parent_element.innerHTML =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "    fig.close_ws(fig, msg);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.close_ws = function (fig, msg) {\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width / mpl.ratio;\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message('ack', {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () {\n",
       "        fig.push_to_output();\n",
       "    }, 1000);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'btn-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'btn-group';\n",
       "    var button;\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'btn-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        button = fig.buttons[name] = document.createElement('button');\n",
       "        button.classList = 'btn btn-default';\n",
       "        button.href = '#';\n",
       "        button.title = name;\n",
       "        button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message pull-right';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = document.createElement('div');\n",
       "    buttongrp.classList = 'btn-group inline pull-right';\n",
       "    button = document.createElement('button');\n",
       "    button.classList = 'btn btn-mini btn-primary';\n",
       "    button.href = '#';\n",
       "    button.title = 'Stop Interaction';\n",
       "    button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
       "    button.addEventListener('click', function (_evt) {\n",
       "        fig.handle_close(fig, {});\n",
       "    });\n",
       "    button.addEventListener(\n",
       "        'mouseover',\n",
       "        on_mouseover_closure('Stop Interaction')\n",
       "    );\n",
       "    buttongrp.appendChild(button);\n",
       "    var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
       "    titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._remove_fig_handler = function () {\n",
       "    this.close_ws(this, {});\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (el) {\n",
       "    el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
       "    el.addEventListener('remove', this._remove_fig_handler);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (el) {\n",
       "    // this is important to make the div 'focusable\n",
       "    el.setAttribute('tabindex', 0);\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    } else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager) {\n",
       "        manager = IPython.keyboard_manager;\n",
       "    }\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which === 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "};\n",
       "\n",
       "mpl.find_output_cell = function (html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i = 0; i < ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code') {\n",
       "            for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] === html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "};\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel !== null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target(\n",
       "        'matplotlib',\n",
       "        mpl.mpl_figure_comm\n",
       "    );\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"\" width=\"150\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot probability data\n",
    "%matplotlib nbagg\n",
    "\n",
    "import matplotlib.animation as animation\n",
    "\n",
    "def amp2prob(vec):\n",
    "    p = [np.abs(z)**2 for z in vec]\n",
    "    return np.array(p)\n",
    "\n",
    "fig = plt.figure()\n",
    "z_data_prob = np.zeros((len(time_steps), 2**N))\n",
    "\n",
    "for i in range(len(time_steps)):\n",
    "    for n in range(2**N):\n",
    "        z_data_prob[i,:] = amp2prob(z_data[i,n,:])\n",
    "    \n",
    "bars = []\n",
    "x = np.array([i for i in range(2**N)])\n",
    "for i, t in enumerate(time_steps):\n",
    "    bar = plt.bar(x, z_data_prob[i], width=0.8, color=\"#00ccff\")\n",
    "    bars.append(bar)\n",
    "    \n",
    "    \n",
    "ani = animation.ArtistAnimation(fig, bars)\n",
    "\n",
    "ani.save('TimeVariationOfProbability.gif', writer='pillow')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
